package appletencriptar;

import appletencriptar.encriptacion.Encoder.BASE64Encoder;
import java.applet.Applet;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.JButton;
import javax.swing.JTextField;


public class AppletEncriptacion extends Applet
{
    /** El botón */
    private JButton b;

    /** El campo de texto */
    private JTextField t;
    private String textoTemporalEncriptado;
    private String clave;

    /**
     * Crea la ventana, inicializa todo y la visualiza
     */
    public void init()
    {
        // Nueva ventana. Se el pone un FlowLayout para que el botón y campo
        // de texto quede alineados.
        setLayout(new FlowLayout());

        // Se crea el botón y se mete en la ventana
        b = new JButton("Inserte clave");
        add (b);

        // Se crea el campo de texto y se mete en la ventana
        t = new JTextField(20);
        add(t);

        // Se le dice al botón qué tiene que hacer cuando lo pulsemos.
        b.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                try
                {
                    clave = t.getText();
                    String texto = "Prueba de encriptacion de texto";//getParameter("textoM");
                    encrypt(texto, clave);
                    System.out.println(textoTemporalEncriptado);
                    //t.setText ("Hola mundo");
                }
                catch (Exception ex)
                {
                   ex.printStackTrace();
                }
                
                //t.setText ("Hola mundo");
            }
        });
    }

    public void encrypt(String text, String key) throws Exception
    {
        byte[] bytesKey = key.getBytes();
        SecretKeySpec spec = new SecretKeySpec(bytesKey, 0, 16, "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, spec);
        BASE64Encoder enc = new BASE64Encoder();
        String salida = enc.encode(cipher.doFinal(text.getBytes()));
        textoTemporalEncriptado = salida;
    }


}
